package com.lumberer.pay2021.wx.jsapi.payment.entity.pay;

import java.io.Serializable;

import com.fasterxml.jackson.annotation.JsonInclude;
import com.lumberer.pay2021.wx.jsapi.payment.entity.pay.amount.Amount;
import com.lumberer.pay2021.wx.jsapi.payment.entity.pay.detail.Detail;
import com.lumberer.pay2021.wx.jsapi.payment.entity.pay.payer.Payer;
import com.lumberer.pay2021.wx.jsapi.payment.entity.pay.sceneinfo.SceneInfo;
import com.lumberer.pay2021.wx.jsapi.payment.entity.pay.settleinfo.SettleInfo;
/**
 * 支付实体类
 * @author lumberer
 *
 */
@JsonInclude(value=JsonInclude.Include.NON_NULL)
public class JsApi{
	/**
	 * 应用ID
	 */
	private String appid;
	/**
	 * 商户ID
	 */
	private String mchid;
	/**
	 * 商品描述
	 */
	private String description;
	/**
	 * 订单号
	 * 商户系统内部订单号，只能是数字、大小写字母_-*且在同一个商户号下唯一
	 */
	private String out_trade_no;
	/**
	 * 交易结束时间
	 * 订单失效时间
	 * 遵循rfc3339标准格式，格式为YYYY-MM-DDTHH:mm:ss+TIMEZONE，YYYY-MM-DD表示年月日，T出现在字符串中，
	 * 表示time元素的开头，HH:mm:ss表示时分秒，TIMEZONE表示时区（+08:00表示东八区时间，领先UTC 8小时，即北京时间）。
	 * 例如：2015-05-20T13:29:35+08:00表示，北京时间2015年5月20日 13点29分35秒。订单失效时间是针对订单号而言的，
	 * 由于在请求支付的时候有一个必传参数prepay_id只有两小时的有效期，所以在重入时间超过2小时的时候需要重新请求下单接口获取新的prepay_id。
	 * 其他详见时间规则 time_expire只能第一次下单传值，不允许二次修改，二次修改系统将报错。如用户支付失败后，需再次支付，需更换原订单号重新下单。
	 * 建议：最短失效时间间隔大于1分钟
	 */
	private String time_expire;
	/**
	 * 附加数据，在查询API和支付通知中原样返回，可作为自定义参数使用
	 */
	private String attach;
	/**
	 * 异步接收微信支付结果通知的回调地址，通知url必须为外网可访问的url，不能携带参数。 公网域名必须为https，如果是走专线接入，使用专线NAT IP或者私有回调域名可使用http
	 */
	private String notify_url;
	/**
	 * 订单优惠标记
	 */
	private String goods_tag;
	/**
	 * 订单金额信息
	 */
	private Amount amount;
	/**
	 * 支付者信息
	 */
	private Payer payer;
	/**
	 * 优惠功能
	 */
	private Detail detail;
	/**
	 * 支付场景描述
	 */
	private SceneInfo scene_info;
	/**
	 * 结算信息
	 */
	private SettleInfo settle_info;
	
	public String getAppid() {
		return appid;
	}
	public void setAppid(String appid) {
		this.appid = appid;
	}
	public String getMchid() {
		return mchid;
	}
	public void setMchid(String mchid) {
		this.mchid = mchid;
	}
	
	public String getDescription() {
		return description;
	}
	public void setDescription(String description) {
		this.description = description;
	}
	public String getOut_trade_no() {
		return out_trade_no;
	}
	public void setOut_trade_no(String out_trade_no) {
		this.out_trade_no = out_trade_no;
	}
	public String getTime_expire() {
		return time_expire;
	}
	public void setTime_expire(String time_expire) {
		this.time_expire = time_expire;
	}
	public String getAttach() {
		return attach;
	}
	public void setAttach(String attach) {
		this.attach = attach;
	}
	public String getNotify_url() {
		return notify_url;
	}
	public void setNotify_url(String notify_url) {
		this.notify_url = notify_url;
	}
	public String getGoods_tag() {
		return goods_tag;
	}
	public void setGoods_tag(String goods_tag) {
		this.goods_tag = goods_tag;
	}
	public Amount getAmount() {
		return amount;
	}
	public void setAmount(Amount amount) {
		this.amount = amount;
	}
	public Payer getPayer() {
		return payer;
	}
	public void setPayer(Payer payer) {
		this.payer = payer;
	}
	public Detail getDetail() {
		return detail;
	}
	public void setDetail(Detail detail) {
		this.detail = detail;
	}
	public SceneInfo getScene_info() {
		return scene_info;
	}
	public void setScene_info(SceneInfo scene_info) {
		this.scene_info = scene_info;
	}
	public SettleInfo getSettle_info() {
		return settle_info;
	}
	public void setSettle_info(SettleInfo settle_info) {
		this.settle_info = settle_info;
	}
	
}
